package Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Vector;

import Modelo.Equipo;
import Modelo.Jugador;
import Modelo.Liga;
import Modelo.Partido;
import Modelo.Umpire;
import Vista.Menu;

public class controladorMenu implements ActionListener {
	
	private Menu PantMenu;
	private Liga liga;
	private Equipo equipo;
	private Jugador jugador;
	private Umpire umpire;
	private Partido partido;
	private Vector<Integer> UmpiresUsados = new Vector<Integer>();
	
	public controladorMenu() {
		super();
		this.PantMenu = new Menu();
		this.PantMenu.setLocationRelativeTo(null);
		this.PantMenu.setVisible(true);
		this.PantMenu.addActionListener(this);
		
		this.liga = liga;
		this.equipo = equipo;
		this.jugador = jugador;
		this.umpire = umpire;
		this.partido = partido;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		String accion = e.getActionCommand();
		if (accion.equals("Registrar Equipo"))
		 new cRegistrarEquipo(liga,equipo);
		if (accion == "Generar Partidos"){
			//generarpartido
		}
		if (accion == "Salir"){
			PantMenu.setVisible(false);
			}
		if (accion == "Calendario"){
			//Mostrar Calendario
		}
		if (accion== "Listado de Posiciones"){
			//mostrar lista posiciones
		}
		if (accion == "Registrar Umpire"){
			//mostar RegistarUmpire
		}
	}
	
	public void umpiresusados(int v){
		UmpiresUsados.add(v);
		}
	
	public void GenerarPartidos(){
		if (liga.UmpiresRegistrados().size()==0 || liga.getEquipos().size()==0){
			this.PantMenu.mostrarMensaje("Antes de generar los partidos se debe completar la información" 
					+ "de los Umpires, Equipos y sus respectivos Jugadores");
		}
		else {
			
		}
	}	
		
	public void PartidosHC() {
		int j = 0,k=0, ramdom;
		int codigo = 100;
		int Ininngs=0;
		Partido partido = null;
		Umpire principal;
		String Fecha=null;	
		int limite=10;
		int i=1;
		
		while (j<=5 && j > 0){
			Equipo HomeClub = liga.getEquipos().get(j), Visitante;
			for (int l=1; l <=2; l++){
				while ( i<=limite) {
					if (k>j && k <= 5){ //Valido que no juegue consigo mismo.
						Visitante = liga.getEquipos().get(k);
						ramdom = liga.UmpireAleatorio();
						principal = liga.UmpiresRegistrados().get(ramdom);
						umpiresusados(ramdom);
						this.partido.setCodigo_partido(codigo);
						this.partido.setFecha_partido(Fecha);
						this.partido.setHomeclub(HomeClub);
						this.partido.setInningsj(Ininngs);
						this.partido.setUmpire(principal);
						this.partido.setVisitante(Visitante);
						liga.AgregarPartido(partido);
						codigo++;
						i++;
					}//if
					else {
						if (j<=k)k++;
						if(k>=5){i++;k=0;}
					}
				}//2do while
			}//FOR
					
			j++;
			limite = limite - 2;
		}//while
	}
	
	public void PartidosV() {
		int j = 0,k=0, ramdom;
		int codigo = 100;
		int Ininngs=0;
		Partido partido = null;
		Umpire principal;
		String Fecha=null;	
		int limite=10;
		int i=1;
		
		while (j<=5 && j > 0){
			Equipo Visitante = liga.getEquipos().get(j), HomeClub;
			for (int l=1; l <=2; l++){
				while ( i<=limite) {
					if (k>j && k <= 5){ //Valido que no juegue consigo mismo.
						HomeClub = liga.getEquipos().get(k);
						ramdom = liga.UmpireAleatorio();
						principal = liga.UmpiresRegistrados().get(ramdom);
						umpiresusados(ramdom);
						this.partido.setCodigo_partido(codigo);
						this.partido.setFecha_partido(Fecha);
						this.partido.setHomeclub(HomeClub);
						this.partido.setInningsj(Ininngs);
						this.partido.setUmpire(principal);
						this.partido.setVisitante(Visitante);
						liga.AgregarPartido(partido);
						codigo++;
						i++;
					}//if
					else {
						if (j<=k)k++;
						if(k>=5){i++;k=0;}
					}
				}//2do while
			}//FOR
					
			j++;
			limite = limite - 2;
		}//while
	}
		
	}